package ln.javatest.day10.demo01;
/*
java.lang,object 类
类Object是类层次结构的根（最顶层）类。每个类都是用Object作为父类。
所有对象（包括数组）都实现这个类的方法。
*/

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class Demo01ToString {
    public static void main(String[] args) {
        /*
        Person类默认冀继承Object类，所以我们可以使用Object类中的toString方法
        String toString() 返回该对象的字符串表示
        */
        Person p = new Person("王嘉尔",20);
        String s = p.toString();
        System.out.println(s);
        //ln.javatest.day10.demo01.Person@282ba1e
        //abc
        //Person{name = 王嘉尔,age = 20}
        //直接打印对象的名字，其实就是调用对象的toString方法 p = p.toString（）
        System.out.println(p);
        //ln.javatest.day10.demo01.Person@282ba1e
        //abc
        //Person{name = 王嘉尔,age = 20}

        /*看一个类是否重写了toString方法，直接打印这个类对一个对象的名字即可
        如果没有重写toString方法，那么打印的就是对象的地址值（默认）
        如果重写了toString方法，那么就按照重写的方式打印
         */
        Random r = new Random();
        System.out.println(r);
        //打印的地址值 java.util.Random@36d64342
        Scanner sc = new Scanner(System.in);
        System.out.println(sc);
        //打印的不是地址值，说明重写了toStringjava.util.Scanner[delimiters=\p{javaWhitespace}+]
        ArrayList<Integer> list = new ArrayList<>() ;
        list.add(1);
        list.add(2);
        System.out.println(list);
        //[1, 2] 重写了toString

    }
}
